package com.game.framework.spring.jdbctemplate.example;

//import java.sql.Connection;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.util.List;
//
//import org.springframework.jdbc.core.BeanPropertyRowMapper;
//import org.springframework.jdbc.core.RowMapper;
//import org.springframework.jdbc.core.SingleColumnRowMapper;
//import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
//import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
//import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

//import com.xiao.account.model.Account;
//import com.xiao.account.model.User;


/**
 * SimpleJdbcTemplate使用示例
 * @author Liyuan
 */

public class SimpleJdbcTemplateExample {
//		extends SimpleJdbcDaoSupport {
//	//建议：将全部SQL声明为String常量
//	private static final String QUERY_ACCOUNT = "select * from t_account";
//	
//	
//	//execute
//	/** add */
//	public void add(Account account){ //不返回PK
//		String sql = "insert into t_account (username, password) values (?,?)";
//		super.getSimpleJdbcTemplate().update(sql, account.getUsername(), account.getPassword());
//	}
//	
//	/** save */
//	public Integer save(Account account){ //返回PK
//		SimpleJdbcInsert insertActor = new SimpleJdbcInsert(this.getDataSource()).withTableName("t_account").usingGeneratedKeyColumns("id");
//		return insertActor.executeAndReturnKey(new BeanPropertySqlParameterSource(account)).intValue();
//	}
//	
//	/** addByParameters */
//	public void addByParameters(Account account){
//		String sql = "insert into t_account (username, password) values (:username,:password)";
//		super.getSimpleJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(account));
//	}
//
//	/** update */
//	public void update(Integer id, String password){
//		String sql = "update t_account set password=? where id=?";
//		super.getSimpleJdbcTemplate().update(sql, password, id);
//	}
//	
//	/** updateByParameters */
//	public int updateByParameters(Account account) {
//		String sql = "update t_account set password=:password where id=:id";
//        return this.getSimpleJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(account));
//	}
//	
//	/** delete */
//	public void delete(Integer id){
//		String sql = "delete from t_account where id=?";
//		super.getSimpleJdbcTemplate().update(sql, id);
//	}
//	
//	/** truncate */
//	public void truncate(){
//		String sql = "truncate t_account";
//		super.getSimpleJdbcTemplate().update(sql);
//	}
//	
//	
//	//execute
//	/** execute */
//	public void execute(String sql){
//		super.getSimpleJdbcTemplate().update(sql);
//	}
//	
//	/** execute */
//	public void execute(String sql, Object... args){
//		super.getSimpleJdbcTemplate().update(sql, args);
//	}
//	
//	/** execute */
//	public void executeByParameters(String sql, Object obj){
//		super.getSimpleJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(obj));
//	}
//
//	
//	//query
//	/** get */
//	public Account get(Integer id){
//		String sql = "select * from t_account where id=?";
//		return super.getSimpleJdbcTemplate().<Account> queryForObject(
//			sql, new BeanPropertyRowMapper<Account>(Account.class), id);
//	}
//	
//	/** get */
//	public Account get(String username){
//		String sql = "select * from t_account where username=?";
//		return super.getSimpleJdbcTemplate().<Account> queryForObject(
//				sql, new BeanPropertyRowMapper<Account>(Account.class), username);
//		//如果结果不唯一，使用下面的查询方式
////		List<Account> list = super.getSimpleJdbcTemplate().query(
////				sql, new BeanPropertyRowMapper<Account>(Account.class), username);
////		return list != null && list.size() > 0 ? list.get(0) : null;
//	}
//	
//	/** getAccountByUsernameAndPassword */
//	public Account getAccountByUsernameAndPassword(String username, String password){
//		String sql = "select * from t_account where username=? and password=?";
//		return super.getSimpleJdbcTemplate().<Account> queryForObject(
//			sql, new BeanPropertyRowMapper<Account>(Account.class), username, password);
//	}
//	
//	/** queryForInt */
//	public Integer queryForInt(){
//		String sql = "select count(*) from t_account";
//		return super.getSimpleJdbcTemplate().queryForInt(sql);
//	}
//	
//	/** queryForString */
//	public String queryForString(Integer id){
//		String sql = "select username from t_account where id=?";
//		return super.getSimpleJdbcTemplate().queryForObject(sql, String.class, id);
//	}
//	
//    /** queryByRowMapper */
//    public Account queryByRowMapper(Integer id){
//    	String sql = "select * from t_account where id=?";
//    	return super.getSimpleJdbcTemplate().<Account> queryForObject(
//    			sql, new AccountRowMapper(), id);
//    }
//	
//	/** queryForListString */
//    public List<String> queryForListString(){
//    	String sql = "select username from t_account";
//    	return super.getSimpleJdbcTemplate().query(sql, new SingleColumnRowMapper<String>());
//    }
//	
//    /** find */
//    public List<Account> find(){ //用BeanPropertyRowMapper自动匹配
//    	String sql = "select * from t_account";
//    	return super.getSimpleJdbcTemplate().query(
//    			sql, new BeanPropertyRowMapper<Account>(Account.class));
//    }
//    
//    /** find2 */
//    public List<User> find2(){ //测试属性匹配
////    	String sql = "select * from t_account";
//    	return super.getSimpleJdbcTemplate().query(
//    			QUERY_ACCOUNT, new BeanPropertyRowMapper<User>(User.class));
//    }
//	
//    /** find3 */
//    public List<Account> find3(){ //用RowMapper手动匹配
//    	String sql = "select * from t_account";
//		return (List<Account>) super.getSimpleJdbcTemplate().query(
//				sql,
//				new RowMapper<Account>() {
//					public Account mapRow(ResultSet rs, int rowNum) throws SQLException {
//		            	Account account = new Account();
//		            	account.setId(rs.getInt("ID"));
//		            	account.setUsername(rs.getString("USERNAME"));
//		            	account.setPassword(rs.getString("PASSWORD"));
//		                return account;
//					}
//				}
//			);
//    }	
//    
//    /** jdbc */
//    public void testJdbc() throws SQLException{
//    	Connection conn = super.getConnection();
//    	// jdbc code...
//    	conn.close();
//    }
//    
//    /**
//     * 内部类：AccountRowMapper
//     * @author Liyuan
//     */
//	private class AccountRowMapper implements RowMapper<Account> {
//        @Override
//        public Account mapRow(ResultSet rs, int i) throws SQLException {
//            return new Account(rs.getInt("id"), rs.getString("username"), rs.getString("password"));
//        }
//    }
    
}
